home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import rdflib
- from rdflib.Graph import Graph
- from rdflib.URIRef import URIRef
- from rdflib.Node import Node
- from rdflib.BNode import BNode
- from rdflib.Literal import Literal
- import RDF
- from rdflib.store import Store
-
- def _t(i):
- if isinstance(i, rdflib.URIRef):
- return RDF.Node(RDF.Uri(unicode(i)))
- if isinstance(i, rdflib.BNode):
- return RDF.Node(blank = str(i))
- if isinstance(i, rdflib.Literal):
- return RDF.Node(literal = str(i))
- if isinstance(i, Graph):
- return _t(i.identifier)
- if i is None:
- return None
- raise TypeError, 'Cannot convert %s' % `i`
-
-
- def _c(i):
- return _t(i)
-
-
- def _f(i):
- if isinstance(i, RDF.Uri):
- return rdflib.URIRef(i)
- if isinstance(i, RDF.Node):
- if i.is_blank():
- return rdflib.BNode(i.blank_identifier)
- if i.is_literal():
- return rdflib.Literal(i)
- return URIRef(i.uri)
- isinstance(i, RDF.Node)
- if i is None:
- return None
- raise TypeError, 'Cannot convert %s' % `i`
-
-
- class Redland(Store):
- context_aware = True
-
- def __init__(self, model = None):
- super(Redland, self).__init__()
- if model is None:
- model = RDF.Model(RDF.MemoryStorage(options_string = "contexts='yes'"))
-
- self.model = model
-
-
- def __len__(self, context = None):
- ''' Return number of triples (statements in librdf). '''
- count = 0
- for triple, cg in self.triples((None, None, None), context):
- count += 1
-
- return count
-
-
- def add(self, .1, context = None, quoted = False):
- ''' Add a triple to the store of triples.
- '''
- (subject, predicate, object) = .1
- if context is not None:
- self.model.append(RDF.Statement(_t(subject), _t(predicate), _t(object)), _c(context))
- else:
- self.model.append(RDF.Statement(_t(subject), _t(predicate), _t(object)))
-
-
- def remove(self, .1, context, quoted = False):
- (subject, predicate, object) = .1
- if context is None:
- contexts = self.contexts()
- else:
- contexts = [
- context]
- for context in contexts:
- if subject is None and predicate is None and object is None:
- self.model.remove_statements_with_context(_c(context))
- continue
- del self.model[(RDF.Statement(_t(subject), _t(predicate), _t(object)), _c(context))]
-
-
-
- def triples(self, .1, context = None):
- '''A generator over all the triples matching '''
- (subject, predicate, object) = .1
- cgraph = RDF.Model()
- triple = RDF.Statement(_t(subject), _t(predicate), _t(object))
- for statement, c in self.model.find_statements_context(triple):
- if context is None or _f(c) == context.identifier:
- cgraph.append(statement)
- continue
-
- for statement in cgraph.find_statements(triple):
- ret = []
- for c in self.model.get_contexts():
- if self.model.contains_statement_context(statement, _c(context)):
- ret.append(c)
- continue
-
- yield ((_f(statement.subject), _f(statement.predicate), _f(statement.object)), iter(ret))
-
-
-
- def contexts(self, triple = None):
- for context in self.model.get_contexts():
- yield Graph(self, _f(context))
-
-
-
- def bind(self, prefix, namespace):
- pass
-
-
- def namespace(self, prefix):
- pass
-
-
- def prefix(self, namespace):
- pass
-
-
- def namespaces(self):
- pass
-
-
-